package com.jyx.water;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;


public class ImageDemo {
      /**
       * 把图片印刷到目标图片上
       * @param pressImg   水印文件
       * @param targetImg  目标文件
       * @param x      横坐标
       * @param y      纵坐标
       */
	public final static void pressImage(String pressImg,String targetImg,int x,int y){
		//目标文件
		try {
			File _file = new File(targetImg); // 获取图片
			Image src = ImageIO.read(_file); // file 文件对象转换成image对象
			int width = src.getWidth(null);
			int height = src.getHeight(null);
			System.out.println(width+"========="+height);
			
			BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
			Graphics g = image.createGraphics(); // Graphics 是java中处理图片的类
			g.drawImage(src,0,0,width,height,null);
			
			
			// 水印文件
			File _filebiao = new File(pressImg);
			Image src_biao = ImageIO.read(_filebiao);
			int width_biao = src_biao.getWidth(null); // 图片宽度
			int height_biao = src_biao.getHeight(null); // 图片高度
			g.drawImage(src_biao,(width-width_biao)/2,(height-height_biao)/2,width_biao,height_biao,null);
		
			g.dispose(); // 结束文件对象的处理
			
			FileOutputStream out = new FileOutputStream(targetImg);
			/**
			 * JPEGCodec 的作用是创建一个和指定输出流关联的JPEGImageEncoder
			 */
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(image);
			out.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}
	/**
	 * 
	 * @param pressText   文字
	 * @param targetImg   目标图片
	 * @param fontName    字体名
	 * @param fontStyle  字体样式
	 * @param color    颜色  0-255  
	 * @param fontSize  大小  12
	 * @param x    横坐标
	 * @param y    纵坐标
	 */
	public static void pressText(String pressText,String targetImg,String fontName,int fontStyle,int color,int fontSize,int x,int y){
		try {
			File file = new File(targetImg);
			Image src = ImageIO.read(file);
			int width = src.getWidth(null);
			int height = src.getHeight(null);
			
			BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
			Graphics g = image.createGraphics();
			g.drawImage(src,0,0,width,height,null);
			
			g.setColor(Color.RED);
			g.setFont(new Font(fontName,fontStyle,fontSize));
			g.drawString(pressText, width-fontSize-x, height-fontSize/2-y);
			g.dispose();
			
			FileOutputStream out = new FileOutputStream(targetImg);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(image);
			out.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
	
	public static void main(String[] args){
		pressImage("C:\\Users\\Tony Liu\\Desktop\\image\\4.jpg","C:\\Users\\Tony Liu\\Desktop\\image\\5.jpg",120,120);
		pressText("潭州学院VIP系统学习班-Java软件工程师","C:\\Users\\Tony Liu\\Desktop\\image\\5.jpg","宋体",16,120,16,250,100);
	}
}
